﻿Imports Biz
Imports DAL

''' <summary>
''' Clase de gestión de lógica de negocio para la entidad Backup
''' </summary>
''' <remarks></remarks>
Public Class GestorBackup

    Private Shared _instance As GestorBackup
    Private Shared _semaforo As New Object

    Private _DALBackup As DALBackupDB

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para consultar la lista de Backups
    ''' </summary>
    ''' <returns>Colección de objetos de tipo cBackup</returns>
    ''' <remarks></remarks>
    Public Function Consultar() As Collection
        Return _DALBackup.SelectAll
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para realizar un backup de la base de datos
    ''' </summary>
    ''' <param name="oBackup"></param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function doBackup(ByVal oBackup As cBackup) As Boolean
        Return _DALBackup.doBackup(oBackup)
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para realizar un restore de la base de datos
    ''' </summary>
    ''' <param name="oBackup"></param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function doRestore(ByVal oBackup As cBackup) As Boolean
        Return _DALBackup.doRestore(oBackup)
    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para inactivar el backup enviado como parámetro
    ''' </summary>
    ''' <param name="oBackup"></param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Inactivar(ByVal oBackup As cBackup) As Boolean
        Return _DALBackup.Update_Inactivar(oBackup)
    End Function

    ''' <summary>
    ''' Método estático Instance para exponer una única instancia de la clase GestorBackup
    ''' </summary>
    ''' <returns>Unica instancia de la clase GestorBackup</returns>
    ''' <remarks></remarks>
    Public Shared Function Instance() As GestorBackup
        If _instance Is Nothing Then
            SyncLock (_semaforo)
                If _instance Is Nothing Then
                    _instance = New GestorBackup
                End If
            End SyncLock
        End If

        Return _instance
    End Function

    Private Sub New()
        _DALBackup = DALBackupDB.Instance()
    End Sub

End Class
